home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hottest 6
/
Hottest 6 (1996)(PDSoft)[!].iso
/
pdsoft
/
demo_library
/
4463.lha
/
BoulderDash
/
BDash.doc
< prev
next >
Wrap
Text File
|
1994-09-14
|
19KB
|
623 lines
-= BoulderDash V1.1 User Manual =-
September 14, 1994
==========
Contents
==========
1. About the game
2. Installation
3. Menus
4. Playing the game
5. Cheat keys
6. File formats
6.1 Game files
6.2 Config file
7. Known bugs.
8. What's up next ?
9. History
10. Thanks..
===================
1. About the Game
===================
"Yet another BoulderDash !", I can hear you scream. We all know the
game from those early days on the C64, spectrum and other computers, so why
does anybody wants to (re)make this old game ? Well simply because it's one
of the best games ever made.
This BoulderDash version has the following features:
* NEEDS (and uses) 68020+, AGA (or better) ChipSet, Kickstart V39,
asl.library and powerpacker.library.
* Intuition friendly with full multitasking. At last you can play your
favorite game while compiling etc...
* Smooth scrolling
* The famous (and cool) C64 graphics
* The famous C64 sounds.
* User definable games and levels
* Joystick and keyboard control
* Cheat options
* Two player game option
* About 1275(!) original C64 levels included for you to complete...
BoulderDash was written in C, except for the Interrupts which were written
in Assembler. All code developed on an Amiga 1200(+4MB 120HD) with SAS/C 6.3,
Devpac 3 and CED.
The sounds were sampled by me (Wim) on 20 kHz. The intro-music contains
the exact tables as are used in the C64 version.
The graphics were converted and adjusted by me without using any
utilities ! (I converted them by hand due to the fact that I was to lazy to
use (write) a utility).
The intropicture was scanned by Luc De Cock from the cover of the
original of BoulderDash II (thanks). Luc will use my C source to make a
PC version in the near future.
This version of is shareware, this means that if you use it a lot I would
appreciate it if you'd send me a contribution of $10 US or the same amount in
any other currency. This money will enable me to produce more programs on the
Amiga and continue to improve this game. Please send money by international
money order, EuroCheck (in Belgian Francs (BF) !!!!!) or cash, it's difficult
for me to cash in other checks.
Since I am constantly adding new features to the game, I accept all
suggestions, improvements and bug reports. You can contact me at :
Wim Taymans
Weesbeekdal 3
3071 Erps-Kwerps
Belgium.
NOTE: I am aware of a few copyright violations (ripping graphics, sound,
ideas). Please do not spoil my fun, I had a great time making this
game. Many Amiga users I know are happy to play this game once again.
ONE MORE NOTE : If this game is ever put on a cover disk of any magazine, I
will be very happy to receive a copy of that magazine. Donations in
the form of money are welcome too :').
==================
2. Installation
==================
Installation is simple, just place the file 'BDash' somewhere in your
'Games' directory under the new directory 'BoulderDash' or something like
that. You can copy the levels in that same directory.
The config file is searched for in de S: directory and the current directory
(in that order). I suggest you let the original config file in the current
directory, start the game, set your preferences and select the Save Prefs
option, this way a new config file will be created in the S: directory and you
still have the original config file.
A Hiscore file will be created in the current directory if you select the
Save HiScore option.
You can start the game by typing 'BDash' or by clicking it's icon from
the WorkBench.
==========
3. Menus
==========
When the intropicture appears, you can use the following menus and
menuitems :
'Project'-menu:
---------------
About... (?) - Shows you some information.
Open game... (g) - Shows a file requester and lets you
select which game to load.
Play game (p) - When a game is loaded, you can play it
starting with level a/1.
This item is ghosted when no game is
loaded.
Show Scores... (h) - Shows you the all time heroes...
Save Scores - Saves the current Scores in the current dir.
Quit (q) - Quits the game (you will never need this
option 8^) ).
'Prefs'-menu:
-------------
Speed - The 'Speed'-item lets you select the
speed of the game. Since there is still
some work to do to get the speed as close
to the C64 version as possible, the
subitems provide some control over the
delay between successive moves.
Blitzz - way too fast but very funny.
Very fast - yeah, this ones cool
Fast - I use this one
Normal - For a normal playable game.
Slow - A bit too slow.
Yawn - ...ZZ.. oh yes, only for very difficult
levels (and patient players).
Players
1 Player - To select a one player game
2 Players - Play a two player game
Cheat - If Checked, you will have all the powers
in the universe (see section 5)
Smooth scroll - If Checked, the scrolling of the levels
will be smooth. Unchecking this item will
result in jumpy scrolling, but in less
CPU-time (see important note in section 7)
Big Screen - Will open the game in a big screen so you can
see the complete level.
Sound - when BoulderDash starts, it will try to
allocate as many channels as possible. If
at least one channel was allocated, this
item will be checked.
Unchecking this item will free all
allocated channels (letting other
programs make use of them.
Checking this item will (re)allocate as
many channels as possible.
AutoSave Scores - Will save the highscores when a new entry is
entered. Unchecking this option will save no
highscores, so you must save them whenever you
want using the 'Save Scores' menu option.
Load Prefs - Will reload the preferences.
Save Prefs - Will save the current settings.
The following menus will only appear when a game was successfully loaded.
XXX-menu: - The XXX contains the name of the loaded
--------- game as specified in the game file (see
section 6).
cavename1 - For each loaded cave/intermission there
. will be a menuitem. When an item is
. selected, you will start a new game in
. this cave/intermission.
cavenameN
'Level'-menu:
-------------
1 - For each level in the game file, there
. will be a menuitem. Checking a level will
. cause the game to start in that level.
.
M
=====================
4. Playing the game
=====================
Playing the game can be done using the keyboard or (if allocation
succeeded) the joystick in port 2.
To control the game with the keyboard, you can use the cursor keys.
'eating-without-walking' is done by pressing down the fire-button or
using the shift-key and move the joystick (pressing the cursor keys) in the
desired direction.
Some in game keys:
* 'P' or 'Space' to Pause the game. Press 'Space' to resume or 'Esc' to
return to the menu.
* 'Esc' to restart the level (and loose one life). Handy if you're
trapped or found out you did something wrong.
===============
5. Cheat keys
===============
BoulderDash has some very powerful cheat keys and options. Many of
them make the levels stupid and I recommend to use them sparingly.
When the 'Cheat'-item is Checked, you can use the following cheat keys when
playing the game.
* 'a' - Lets the amoeba (the blobbing thing) grow very fast or
normal (whatever it was not currently doing).
* 'd' - Pick all diamond in the level.
* 'e' - Explode all enemies.
* 'k' - Kill (remove) all enemies.
* 'n' - Go to the next level.
* 't' - Reset the time.
* 'f' - fast forward. (useful for long waiting for amoebe etc.)
You can also use the mouse as follows:
* Left mouse-button to clear the place under the pointer.
* Right mouse-button to place a boulder under the pointer.
You can safely activate your window by clicking on Rockford.
=================
6. File formats
=================
----------------
6.1 Game Files
----------------
BoulderDash uses an extensive file-format to describe the levels and
games. The general game-format has the following form :
<Game> = "BoulderGame(" <Game description> ")"
<Game description> = <Game Name> "," ((<Cave> | <Intermission>) "," ...)
<Game Name> = "GameName(" <string> ")"
<Cave> = "Cave(" <Cave description> ")"
<Intermission> = "Intermission(" <Cave description> ")"
<Cave description> = <Cave Name> "," <Map descriptions> "," (<Level>","...)
<Cave Name> = "Name(" <string> ")"
<Map description> = "Maps(" <Maps> "," ... ")"
<Maps> = <Mapline>, ...
<Mapline> = """ <Mapelement> , ... """
<Mapelement> = a | b | c | d | g | j | l | m | r | s | v | w | B | X | S |
<space>
<Level> = "Level(" <LevelOptions> ")"
<LevelOptions> = ( "AmoebaBreak(" <int> ")" |
"DiaPoints(" <int> ")" |
"ExtraPoints(" <int> ")" |
"DiaReq(" <int> ")" |
"Time(" <int> ")" |
"SlimePerm(" <int> ")" |
"Colors(" <int> "," <int> "," <int> ")" |
"Map(" <int> ")" ) "," ...
String (<string>) are always enclosed in double quotes. Integers range
from 0 to 999 or 99 depending on how many digits are reserved in the
scorebar. The C64 version uses all unsigned bytes (0..255) for these
values, so I suggest you use these values too.
Comments can be put in the description file between #'s.
I tried to make the input format as flexible as possible by using a
textual representation of the games and levels (take a look at a game file
to see what I mean). This will allow people to use a text editor to edit
and create new levels instead of writing a whole new level-editing program
(if somebody has some time left, he/she has my moral support).
Lets take a look at what the various keywords mean. Note that the
keywords in the input file are case independent. Strings are case
dependant.
ex.:
BoulderGame( GameName("MyBoulder", ...
- We have a bouldergame here with the name
"My Boulder". This name is the text that
will appear in the menubar.
Next we need to specify the caves for this game. There are two kinds of
caves.
* Caves : have a dimension of 40 (x direction) by 22 and HAVE to be
completed to proceed to the next level.
* Intermission : have a dimension of 20 (x direction) by 12 and don't
have to be completed to proceed to the next level. When the
player reaches an intermission he/she is granted an extra life.
Caves or intermissions can be specified with:
ex.:
Cave( Name("CoolCave"), ....
Intermission( Name("DigThis !"), ....
To make a Cave called "CoolCave" and an Intermission called "DigThis !"
respectively. The Names of the Caves and Intermissions will appear as the
menuitems in the 'GameName'-menu.
Caves (and Intermissions) have Maps, which defines the world of
Rockford. With the 'Maps' keyword, you can specify the different worlds for
this Cave/Intermission. The different maps are separated with commas. Each
line of a map is enclosed in double quotes (").
A map line consists of map elements, this are the actual objects that
will appear in the Cave/Intermission when playing the game. BoulderDash
knows the following objects (preceded by their map element) :
<space> = empty
a = an Amoeba.
b = a boulder
c = a growing wall.
d = a diamond
g = ground
j = Rockford (do not use)
l = slime
m = magic wall
r = rectangular enemy
s = steel
v = a butterfly
w = wall
B = Background
X = exit
S = start
ex.:
Maps( "ggggggbggbggggSgggdggggggggggggggggggggg"
"gggggsgggggggggggggggggggggggggggggXgggg"
,
"ssssssssssssssssssssssssssssssss"
"s S d s"
"s d X s"
"ssssssssssssssssssssssssssssssss"
)
declares two maps of different sizes. The map you specify first has number
0, the next one has number 1, etc... This will be important in a while..
Note that the size of the maps depends on whether you specify them for
a Cave or an Intermission. The game uses the following dimensions :
* Cave dimensions : 40 (width) x 22 (height)
* Intermission dimensions : 20 (width) x 12 (height)
specifying maps of different size will either crop the map or fill the
non specified objects with Steel ('s')
After you have specified the maps, you can build different levels with
them. A level will define how the maps are used in the game.
A new level definition is started with the 'Level' keyword. Between
braces follow the different characteristics of this level. You can
currently influence game characteristics with the following keywords :
* AmoebaBreak(x) - the Amoeba will grow slowly 'till the
size x is reached, it will then continue
to grow at a high speed. an amoeba turns
into stone if it reaches the size of 200.
* DiaPoints(x) - defines the points for each diamond you
pick.
* ExtraPoints(x) - after picking the required number of
diamonds to complete a level, you get x
points for every extra diamond you pick.
* DiaReq(x) - You must at least pick x diamonds to
complete this level. The exit will become
free if you pick more than x diamonds.
* Time(x) - The time to complete this level.
* SlimePerm(x) - Set the permeability of the slime. x is a
value between 0 and 8. 0 is maximum
permeability.
* Colors(c1, c2, c3 ) - Defines the colors for this level. The
colors are numbered like the C64 palette
which is : Black=0, White=1, Red, Cyan,
Purple, Green, Blue, Yellow, Orange,
Brown, Light Red, Dark Grey, Medium Grey,
Light Green, Light Blue, Light Grey=15.
* Map(x) - With the 'Maps'-keyword you specified the
different maps for this level and with
this keyword you specify witch map you
would like to use for this level. The map
you specified first with the
'maps'-keyword has number 0.
ex:
Level(AmoebaBreak(30), DiaPoints(20), ExtraPoints(30), DiaReq(20),
Time(120), Colors(6,14,1), Map(0))
A new level is defined with characteristics as stated above. The colors
are blue, light blue and white. A reference to map 0 is made, meaning that
this level uses map 0 as defined with the 'Maps'-keyword.
Different Levels can be declared for the same Cave/Intermission. When
you specify several levels, The first one you declare should contain
every keyword that is relevant in this level. For the other levels you
declare, you only have to declare new options.
ex:
Level(AmoebaBreak(30), DiaPoints(20), ExtraPoints(30), DiaReq(20),
Time(120), Colors(6,14,1), Map(0)),
Level(Time(100), Map(1))
Declares two levels for this Cave/Intermission. The second level has the
same characteristics as the first one except for the Time and the map.
For a good example of Game-files, I suggest taking a look at the games
found with this package.
-----------------
6.2 Config File
-----------------
BDASH will search for a Config file called BDASH.config in your S: directory
and in your current directory. The config file consists of Keywords followed by
a value. Following keywords and values are recognised :
Keyword Value
----------------------------------------------------------------
SPEED BLITZ | VERYFAST | FAST | NORMAL | SLOW | YAWN
- Sets the speed as specified in the menus
NUMPLAYERS 1 | 2
- Sets the number of players
CHEAT TRUE | FALSE
- Sets the cheat mode
SMOOTHSCROLL TRUE | FALSE
- Sets the smoothscroll option
BIGVIEW TRUE | FALSE
- Sets the Bigscreen option
SOUND TRUE | FALSE
- Specifies if sound is to be allocated
JOYSTICKWARN TRUE | FALSE
- Gives a warning if no joystick is available
SOUNDWARN TRUE | FALSE
- Gives a warning if no sound is available
AUTOSAVESCORES TRUE | FALSE
- Sets the autosavescores option
TASKPRI -128..127
- Sets the priority of the main game (0 default)
SCOREPRI -128..127
- Sets the priority of the scoretask (-1 default)
EXTRALIFEPRI -128..127
- Sets the priority of the extralifetask (-2 default)
GAMESPATH "Work:Games/BoulderDash/BoulderGames"
- Tells BDASH where to find the gamefiles
===============
7. Known bugs
===============
* There seem to be some serious problems when you try to pull down the
screen (or flip screen ) when the game is scrolling. I don't know if
this can be corrected in the future. Do *always* wait for the scrolling
to stop before pulling down or changing screens.
This bug does not appear when you uncheck the 'Smooth scroll'-item in
the menu.
* This game was designed to work on a DOUBLENTSC-screen in a 176*200
resolution. 'Force-monitoring' doublentsc screens to other
resolutions result in (sometimes) strange effects. This bug is due to
the fact that some hardware-copper instructions are use to close the
borders and move the screen. One of my next concerns is to use some
more Intuition friendly ways than copper-lists to arrange the
soft-scrolling. I still have to think about that.
* The smooth scrolling worked perfect on my A1200 (+4MB) by seemed to
slightly shiver on the accelerated A1200 (equipped with a 68030 and
68882) of a friend. It seemed like the interrupt was handled a bit
too fast so that changes to the viewport were done while it was being
drawn. This will probably be fixed in the future.
* The C64 version was able to animate several Rockfords at the same
time because it had the (oh so good) feature of character animation.
This feature is not supported in this version so some levels may be
unplayable (BoulderDash4,intermission 1 actually).
=====================
8. What's up next ?
=====================
* Bug Fixes. I suspect you'll find dozens more. Suggestions and bug
reports are very welcome.
* A cool feature would be to play the game in a little window on the
WorkBench screen (or some other Public Screen). I need to reconvert
the graphics for maximum effect. I've already started drawing some cool
graphics, but it's not finished yet.
* the HiScores should contain more information like the time, name of the
game, level, the options etc..
* A keyword in the gamefile to specify the initial demogame.
============
9. History
============
V1.1
------
Modifications since V1.0 are:
- Butterflies do work as on the C64. CPU-time is depending on the number
of Butties in the level.
- A Config file is included to set your preferences.
- HiScore loader/saver.
- Fast forward option in cheat mode.
- Powerpacker game files will be decrunched automatically.
- NORMAL speed is more like the C64 version now.
V1.0
------
First release.
============
10. Thanks
============
Thanks to Luc De Cock for providing the different levels. Note that
these levels are ripped from the Bouldercollection which was provided with
the (excellent) C64 emulator for the IBM-PC computer. Thanks for the
scanned intro picture. See you..
Thanks to Commodore for making the Amiga.
(c) 1994 Wim Taymans.